/**
 * 
 */
package com.holystone.orca.sys.service;

import java.util.List;

import com.holystone.orca.base.service.IBaseService;
import com.holystone.orca.common.PageData;
import com.holystone.orca.sys.mybatis.model.SysPrivilege;

public interface ISysPrivilegeService extends IBaseService<SysPrivilege>{

	/**
	 * 查询出所有权限信息
	 * @return
	 */
	public List<SysPrivilege> selectAllPrivilege();
	
	/**
	 * 查询所有可用状态的权限
	 * @return
	 */
	public List<SysPrivilege> selectAllOpenPrivilege();
	
	/**
	 * 根据roleId查询出其所拥有的权限，用于生成树的时候权限是否被选中
	 * @param roleId
	 * @param priId
	 * @return
	 */
	public boolean selectPrivilegeByRoleId(int roleId, int priId);
	
	/**
	 * 根据传入的priId集合查询出对应的权限信息
	 * @param priIdList
	 * @return
	 * @throws Exception
	 */
	public List<SysPrivilege> selectPrivilegeByPriId(List<Integer> priIdList) throws Exception;
	
	/**
	 * 分页，点击树的分支，生成其和其子类的信息，生成表格
	 * @param iPageNo
	 * @param iPageSize
	 * @param orderField
	 * @param priId
	 * @return
	 * @throws Exception
	 */
	public PageData pagingSysPrivilegeList(int iPageNo, int iPageSize, String orderField, String priId, boolean msg) throws Exception;

	/**
	 * 根据priId查询出权限信息
	 * @param priId
	 * @return
	 * @throws Exception
	 */
	public List<SysPrivilege> sysPrivilegeList(String priId) throws Exception;
	
	/**
	 * 传入priId集合，查询出所有对应的数据
	 * @param list
	 * @return
	 * @throws Exception
	 */
	public List<SysPrivilege> selectPrivilegePriName(List<Integer> list) throws Exception;
	
	/**
	 * 添加兄弟权限信息
	 * @param sysPrivilege
	 * @return
	 * @throws Exception
	 */
	public boolean addBroPrivilege(SysPrivilege sysPrivilege) throws Exception;
	
	/**
	 * 根据priId查询出当前权限数据，用于添加子级节点显示父节点名字
	 * @param priId
	 * @return
	 * @throws Exception
	 */
	public SysPrivilege selectParentPrivilegeByPriId(int priId) throws Exception;
	
	/**
	 * 根据priId查询出父节点数据，用于添加同级节点显示父节点名字
	 * @param priId
	 * @return
	 * @throws Exception
	 */
	public SysPrivilege selectPriByPriId(int priId) throws Exception;
	
	/**
	 * 添加孩子节点数据
	 * @param sysPrivilege
	 * @return
	 * @throws Exception
	 */
	public boolean addChildPrivilege(SysPrivilege sysPrivilege) throws Exception;
	
	/**
	 * 修改权限信息
	 * @param sysPrivilege
	 * @return
	 * @throws Exception
	 */
	public boolean editPrivilege(SysPrivilege sysPrivilege, String oldActionPri) throws Exception;
	
	/**
	 * 删除权限信息
	 * @param priId
	 * @return
	 * @throws Exception
	 */
	public boolean delPrivilege(int priId) throws Exception;
	
	/**
	 * 多项删除
	 * @param list
	 * @return
	 * @throws Exception
	 */
	public boolean delSelectPrivilege(List<Integer> list) throws Exception;
	
	/**
	 * 根据priId查询出当前节点的子节点
	 * @param priId
	 * @return
	 * @throws Exception
	 */
	public SysPrivilege selectIsParentPri(Integer priId) throws Exception;
	
	/**
	 * 查询父类信息
	 * @param priid
	 * @return
	 * @throws Exception
	 */
	public List<SysPrivilege> selectPriviByPriId(Integer priId) throws Exception;
	/**
	 * 跟据Url查询权限
	 * @author: 李海宁
	 * @date: 2016年10月24日 上午10:35:40
	 * @param url
	 * @return List SysPrivilege权限结合
	 * @throws Exception
	 */
	public List<SysPrivilege> selectPriviByUrl(String url) throws Exception;
}
